# -*- coding: utf-8 -*-
""" Handler zum Eingeben von einzelnen Quizz-Aufgaben. """
# appengine imports
from google.appengine.ext import db

#python imports
import cgi, sys, hashlib
from datetime import datetime

#local imports
from baserequesthandler import BaseRequestHandler
from models import QAufgabe 

erlaubte_benutzer = {'orges': '123quizz321'}

class Handler(BaseRequestHandler):

  def get(self, akey):
    
    aufgabe = QAufgabe.gql('WHERE akey = :1', akey).get()
    if aufgabe is not None:
      links = aufgabe.links
      for link in links:
        self.response.headers.add_header('links',link)
      self.response.out.write(str(links)+'\n')
      return
    else:
      self.response.set_status(404, 'Aufgabe wurde nicht gefunden')
      self.response.out.write('Aufgabe wurde nicht gefunden')
      return


  def post(self,akey):
    link_list = [l.encode('utf-8') for l in self.request.get_all('link')]
    try:
      b = self.request.headers['Benutzer']
      benutzer, passwort = b.split(';')
    except KeyError:
      self.response.set_status(404, 'nicht authentifiziert')
      self.response.out.write('nicht authentifiziert')
      return

       
    authentifiziert = (erlaubte_benutzer[benutzer] == passwort)
    if not authentifiziert:
      self.response.set_status(404, 'nicht authentifiziert')
      self.response.out.write('nicht authentifiziert')
      return

    #self.response.out.write(akey+'\n'+str(link_list)+'\n')
    #return

    ##########
    aufgabe = QAufgabe.gql('WHERE akey = :1', akey).get()
    if aufgabe is not None:
      old_links = aufgabe.links
      old_links.extend(link_list)
      #make every link occur only once:
      new_links = list(set(old_links))
      aufgabe.links = new_links
      #aufgabe.links = list(set(link_list))
      #### initialisiere neuen p-vektor:
      l = len(aufgabe.links)
      aufgabe.p = [str(1.0/l) for i in range(l)]
      aufgabe.put()
      self.response.set_status(200)
      self.response.out.write(str(aufgabe.links)+'\n')
      return
    else:
      self.response.set_status(404, 'Aufgabe wurde nicht gefunden')
      self.response.out.write('Aufgabe wurde nicht gefunden')
      return

    


     



